Skip to content

fix(ci): pin ghostty-web to immutable SHA and freeze all CI installs (CI-LOCK-02) - #232

Merged
LeXwDeX merged 1 commit into
devfrom
fix/frozen-lockfile
Aug 12, 2026
Merged

fix(ci): pin ghostty-web to immutable SHA and freeze all CI installs (CI-LOCK-02)#232
LeXwDeX merged 1 commit into
devfrom
fix/frozen-lockfile

Conversation

@LeXwDeX

@LeXwDeX LeXwDeX commented Aug 12, 2026

Copy link
Copy Markdown
Owner

Fixes #231

What

Closes CI-LOCK-02 — makes dependency installation reproducible so the lockfile is authoritative and CI never tests a dependency set different from what bun.lock declares.

Changes (5 files)

  1. packages/app/package.json — pin ghostty-web from mutable #main to immutable commit 83c0a07b8628b748aed073b232cb4b52a6ca11c1.
  2. bun.lock — synced to the pin (manifest + lock entry), so bun install --frozen-lockfile passes on a clean checkout.
  3. .github/actions/setup-bun/action.yml--frozen-lockfile on both installs (Linux + Windows).
  4. .github/workflows/release-fork.yml--frozen-lockfile on the package-templates install.
  5. packages/opencode/test/policy/repo-dependencies.test.tsnew static gate: fails closed if any git dependency is not pinned to a full 40-char SHA, or any bun install in CI (.github/**/*.yml) is not frozen. Config-only validation — no second install flow.

Evidence

  • Clean checkout bun install --frozen-lockfile: previously lockfile had changes; now passes with a stable lock (verified sha before/after install identical).
  • packages/opencode, packages/core, packages/app typecheck: all green.
  • git diff --check: clean.

Mutation-proven gate

  • Revert the SHA to #main → gate turns Red.
  • Drop --frozen-lockfile from any CI install → gate turns Red.

Scope

CI/dependency reproducibility only. No production runtime code, no dependency version bumps (pin to an already-resolved commit), no release/merge.

🤖 Generated with Claude Code

…(CI-LOCK-02)

A clean checkout could not reproduce dependencies: packages/app/package.json
pinned ghostty-web to the mutable `#main` ref while bun.lock recorded a stale
commit (513463a), so `bun install --frozen-lockfile` failed with 'lockfile had
changes'. CI also ran non-frozen installs via the shared setup-bun action, so it
could silently test a different dependency set than the lock declared.

Fixes:
- Pin ghostty-web to the reviewed immutable commit 83c0a07b8628b748aed073b232cb4b52a6ca11c1.
- Sync bun.lock to that pin (manifest + lock entry).
- Add `--frozen-lockfile` to both setup-bun installs (Linux + Windows) and to the
  release-fork package-templates install.
- Add a static repository-policy gate (test/policy/repo-dependencies.test.ts) that
  fails closed if any git dependency is not pinned to a full 40-char SHA, or any
  `bun install` in CI (.github/**/*.yml) is not frozen. It validates config only —
  no second install flow.

Mutation-proven: reverting the SHA to `#main`, or dropping `--frozen-lockfile`
from any CI install, flips the gate Red. Clean checkout `bun install
--frozen-lockfile` now passes with a stable lock.

Co-Authored-By: Claude <noreply@anthropic.com>
@LeXwDeX
LeXwDeX merged commit 113b24e into dev Aug 12, 2026
5 checks passed
@LeXwDeX
LeXwDeX deleted the fix/frozen-lockfile branch August 12, 2026 03:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant